﻿package {
	import flash.text.*;
	import flash.net.*;
	import flash.events.*;
	import flash.system.*;
	/*
	classe de connexion au serveur
	******************************/
	public class ClientSocket extends EventDispatcher 
	{
		var historique:TextField;
		var connexion:XMLSocket;
		var rxml:XML;
		public static const XMLRECU:String = "xmlRecu";
		public static const CONNECTE:String = "connecté";
		public static const DECONNECTE:String = "deconnecté";
		public static const PBCONNEXION:String = "pb connexion";
		public function ClientSocket(ip:String,port:int)
		{
			Security.loadPolicyFile("xmlsocket://80.69.221.66:843");
			
			// création d'une instance de XMLSocket
			connexion = new XMLSocket(ip, port);
			// écoute des événements
			connexion.addEventListener ( Event.CONNECT, connexionReussie );
			connexion.addEventListener ( Event.CLOSE, fermetureConnexion );
			connexion.addEventListener ( DataEvent.DATA, receptionDonnees );
			connexion.addEventListener ( IOErrorEvent.IO_ERROR,problemeConnexion);
		}
		function connexionReussie ( pEvt:Event ):void
		{
			trace("connexion réussie");
			dispatchEvent ( new Event (ClientSocket.CONNECTE) );
		}
		function fermetureConnexion ( pEvt:Event ):void
		{
			trace("fermeture de la connexion");
			dispatchEvent ( new Event (ClientSocket.DECONNECTE) );
		}
		function receptionDonnees ( pEvt:DataEvent ):void
		{
			trace("chaine reçue : "+pEvt.data);
			rxml = new XML(pEvt.data);
			dispatchEvent ( new Event (ClientSocket.XMLRECU) );
		}
		public function envoyer(quelquechose:String)
		{
			//conversion de la chaine en XML pour l envoie
			var autrechoseXML:XML = new XML(quelquechose);
			connexion.send(autrechoseXML);
		}
		function problemeConnexion(pEvt:Event):void
		{
			trace("problème de connexion");
			dispatchEvent ( new Event (ClientSocket.PBCONNEXION) );
		}
	}
}